"""
配置文件
包含项目的各种配置参数
"""
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 获取项目根目录
BASE_DIR = os.path.abspath(os.path.dirname(__file__))


class Config:
    """基础配置类"""
    # 应用URL前缀
    APPLICATION_ROOT = '/jyb-tools'
    
    # 密钥配置
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-please-change-in-production'
    
    # 文件上传配置
    UPLOAD_FOLDER = os.path.join(BASE_DIR, 'static', 'uploads')
    MAX_CONTENT_LENGTH = 1024 * 1024 * 1024  # 最大上传文件大小：1GB
    ALLOWED_EXTENSIONS = {'pdf', 'doc', 'docx', 'txt', 'xlsx', 'xls'}
    
    # 输出文件配置
    OUTPUT_FOLDER = os.path.join(BASE_DIR, 'static', 'output')
    
    # 模板文件配置
    TEMPLATE_FOLDER = os.path.join(BASE_DIR, 'templates', 'word_templates')
    
    # 日志配置
    LOG_FOLDER = os.path.join(BASE_DIR, 'log')
    LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
    LOG_FORMAT = '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
    LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
    
    # 开发者信息配置
    DEVELOPER_NAME = '小李'
    DEVELOPER_WECHAT = 'wujie122511'
    
    # 邮件配置
    MAIL_SERVER = os.environ.get('MAIL_SERVER', '2712859814.qq.com')
    MAIL_PORT = int(os.environ.get('MAIL_PORT', 587))
    MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'true').lower() in ['true', 'on', '1']
    MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', 'false').lower() in ['true', 'on', '1']
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER') or os.environ.get('MAIL_USERNAME')
    
    # 验证配置
    ADMIN_EMAIL = os.environ.get('ADMIN_EMAIL')  # 管理员邮箱
    VERIFICATION_VALIDITY_DAYS = int(os.environ.get('VERIFICATION_VALIDITY_DAYS', 30))  # 验证有效天数
    AUTH_DATA_FILE = os.path.join(BASE_DIR, '.auth_data.json')  # 验证数据存储文件
    
    # 确保必要的文件夹存在
    @staticmethod
    def init_app(app):
        """初始化应用配置"""
        os.makedirs(Config.UPLOAD_FOLDER, exist_ok=True)
        os.makedirs(Config.OUTPUT_FOLDER, exist_ok=True)
        os.makedirs(Config.TEMPLATE_FOLDER, exist_ok=True)
        os.makedirs(Config.LOG_FOLDER, exist_ok=True)

class DevelopmentConfig(Config):
    """开发环境配置"""
    DEBUG = True

class ProductionConfig(Config):
    """生产环境配置"""
    DEBUG = False

# 配置字典
config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}
